�ŋ߂́AXML�̕��y�ɂ���āA�p�[�T�[�W�F�l���[�^�̏o�Ԃ͂߂����菭�Ȃ��Ȃ�܂������A������Ƃ����Ǝ��`���t�@�C���̓ǂݎ���A�����̉��߂ɂ͂܂��܂����ɗ��c�[���ł��B�����ł́A�������������������P�[�X��A�����炭���̐l�����ɗ�������K���ɒԂ��Ă����܂��B���̕��ʂ̐��Ƃł͂Ȃ��̂ŊԈႢ�Ȃǂ���܂����炨�m�点�������B
�R���p�C���[�̂悤�ȁA���錈�܂����`���̃t�@�C����ǂ�ŁA����������v���O������������������c�[���B�R���p�C���[����邽�߂̃R���p�C���[�B�P����Ƃ����Ǎ��Ƒ�ςȁu�p�[�X����i����ǂ�ʼn��߂���j�v���O�����v������Ă����\�t�g�B<�i���������������B�j
�J�����F[email protected]
JavaTip��SmartDoc�ŗL���Ȑ�C������y�[�W���Q�l�ɂȂ�܂��B
���̂悤�Ȏ��ɂ͎�y�Ƀv���O�������������Ƃ��o���܂��B
JavaCC���@������A�K���Ȑl��������݂����ł��B
�t�@�C���╶�����ǂ�ʼn��߂���v���O���������������Ƃ��ɁA���̂悤�ȃc�[�����g���킯�ł����A�������������Ɏ��̂悤�ȃP�[�X�ɂ͎g���Â炩�����肵�܂��B
���̌o����A�ȏ�̃P�[�X�Ɉ�v����ꍇ�́AJavaCC���g���ĕ��@���߂���̂ɑ�ϋ�J���܂��B��J���Ȃ����Ƃ�JavaCC�̑��݈Ӌ`���Ƃ���A�ʂ̕��@���l���邱�Ƃ�������������������������܂���B
�܂�JavaCC���g����ł�邱�Ƃ́A�g�[�N���iToken�j�ƌĂ�镶�@�̍ŏ��v�f���`���邱�Ƃł��B�iJavaCC�ɂ���Đ������ꂽ���@���߃v���O�����́A���͂��ꂽ�������A���̃g�[�N���Ƃ����P�ʂɕ������Ă�����߂��n�߂܂��̂ŁA���ꂪ������Ύn�܂�܂���B�j
�g�[�N���ɂ͈ȉ���4��ނ���܂����A���ʂ͏��2�����ő��v�ł��B
�g�[�N���̗�Ȃǂ�JavaCC�ɕt���̃T���v���ɂ�������t���Ă��܂��B��ώQ�l�ɂȂ�܂��B
JavaCC�̃T���v���ɂ���AJavaGrammar���Q�l�ɂ��āA
< #LETTER: //���{����܂��� [ "\u0024", "\u0041"-"\u005a", "\u005f", "\u0061"-"\u007a", "\u00c0"-"\u00d6", "\u00d8"-"\u00f6", "\u00f8"-"\u00ff", "\u0100"-"\u1fff", "\u3040"-"\u318f", "\u3300"-"\u337f", "\u3400"-"\u3d2d", "\u4e00"-"\u9fff", "\uf900"-"\ufaff" ] >
���g���Ƃ��A���邢�͒P���ɁA
< #NONASCII: ["\u0080"-"\ufaff"] >
���g���Ƃ���������邩�Ǝv���܂��B�Ȃ��A���{�����͂���ɂ́A��q�̍H���s���K�v������܂��B
���낢�날�邩�Ǝv���܂����A�����ł�TeX�̐����̗���o���܂��B
TeX�̐��������߂���ꍇ�A�uxy_123^45\beta�v�́u x | y | _ | 1 | 23 | ^ | 4 | 5 | \beta �v�ƕ���������@�����R�ł��B
�������A���ʂɕ��@���l����ƁA�uxy | _ | 123 | ^ | 45 | \beta�v�ƕ����������Ă��܂��A�S�R�Ӗ��̈Ⴄ���̂Ƃ��ĉ��߂���Ă��܂��܂��B ����ł͂ƁA�P��␔����1�����P�ʂŋ���Ă��܂��ƁA�u12.34�v��A�u\text{this is a pen.}�v�Ȃǂ̕ʂ̌��Ŗ�肪�N���Ă��܂���ɁA�N��1�����P�ʂŕ��@���l����������܂���B
�������������ɂ́A�ux y_1 23^4 5\beta�v�̂悤�ɁA���͕�����̓K���Ȍ��ɋ����܂��B�܂�AJavaCC�ɂ�镶�@���߃v���O�����ɓ����O�ɁA���O�̃v���v���Z�b�T�ɂ��O�������s���Ƃ������Ƃł��B����͕��@���߂����ȒP�ł�����A������Ɗ撣��Ή������܂��B�������A���܂蕡�G�ȑO����������Ă��܂��ƁA���̂��߂�JavaCC��������܂���AJavaCC�̍�ƂƂ̌��ˍ����ň�ԊȒP�ɂȂ���������邱�Ƃ��d�v�ł��B
�O�́AStringBufferInputStream�Ƃ����N���X���������̂ł����A���� Deprecated �Ȃ̂Ŏ����ō��܂��B�P�ɁAInputStream��StringReader�����b�v���邾���ł��B
public class StringInputStream extends InputStream { StringReader in; private StringInputStream() {} /** build input stream from given string. * @param source input stream source */ public StringInputStream(String source) { in = new StringReader(source); } public int read() throws IOException { return in.read(); } public void close() throws IOException { in.close(); } public synchronized void mark(int readlimit) { try { in.mark(readlimit); } catch(IOException e) { throw new RuntimeException("IOException : StringInputStream["+ toString()+"]"); } } public synchronized void reset() throws IOException { in.reset(); } public boolean markSupported() { return true; } }
JavaCC�̕��@���߃N���X�̃R���X�g���N�^�ŁA�ȉ��̂悤�ɗ^����Γ����܂��B
public MyParser(String in) throws ParseException { this(new StringInputStream(in)); }
JavaCC�͍ŏ��̃o�[�W����������{�ꂪ�ʂ�܂���ł����B�r���Ń��j�R�[�h�̓��͂�OK�ɂȂ����͂��ł����A�o�O�������Ă����������ɒ����Ă��܂���B���{���ʂ����@�Ƃ��āA�ȉ��̕��@������܂��B
�ȉ��̂悤�ɁA�����R�[�h��128�ȏ�̕����́A���j�R�[�h�G�X�P�[�v�ɂ��Ă��܂��܂��B�������́uStringInputStream�v�N���X�ɓK���ɉ����ĕϊ����s�킹�܂��B
public static String escape(String in) { StringBuffer buf = new StringBuffer(); for (int i=0;i<in.length();i++) { int code = (int)in.charAt(i); if (code >= 128) { buf.append("\\u"+Integer.toHexString(code)); } else { buf.append(in.charAt(i)); } } return buf.toString(); }
�ȉ���2�̃X�C�b�`��ݒ肵�܂��B
UNICODE_INPUT=false; JAVA_UNICODE_ESCAPE=true;
����ŁA���{��͎����I��ASCII�R�[�h�ɂ��G�X�P�[�v�ɒu��������ē��͂���܂��̂ŁA���{����܂��͂����߂ł��܂��B����͒x����������܂��A���O�̉��߃v���O�����������͂����Ǝ��Ԃ̒Z�k�ɂȂ�܂��B
�Ȃ��AJava�̃v���O�����ɂ��Ĉ�ʓI�Ɍ����邱�Ƃł����A�S�p�́u�`�v�Ȃǂ̕����̓��j�R�[�h�Ƃ̕ϊ��̉ߒ��ʼn�����\��������܂��B
SPECIAL_TOKEN ���g�����@������܂����A�����ł�JAVA_CODE���g���ăg�[�N���������Ŕ��f���ăX�L�b�v���Ă��܂��P�[�X�ɂ��Đ������܂��BTeX �̐����ł̃e�L�X�g�����̉��߂̗�������܂��B
�u\text{This is a pen.}�v�����߂��܂��B�����ł́u| \text | { | This is a pen. | } �v�Ɖ��߂������Ƃ��܂��B�u\text�v�����������_�Ŏ��̃��\�b�h���Ăт܂��B
JAVACODE String contents() { Token curTok = token; Token tok = getNextToken(); // ���̃g�[�N����ǂ� if (!(tok.kind == LBRACE)) { // LBRACE = "{" token = curTok; // ���J�b�R�ł͂Ȃ������� return null; // �g�[�N������O�ɖ߂��Ė߂� } int nesting = 1; StringBuffer content = new StringBuffer(); while (true) { tok = getNextToken(); if (tok == null) break; if (tok.kind == RBRACE) { // RBRACE = "}" nesting--; if (nesting == 0) { break; } } if (tok.kind == LBRACE) { nesting++; } content.append( tok.image ).append(' '); // �g�[�N���̐�ڂɋ����� // �i�����͊e�K�p��ʂɂ���čl����K�v������j } return content.toString().trim(); }
�A��l�Ƃ��āA�u{ }�v�ň͂܂ꂽ������������Ƃ��ċA���Ă��܂��B���������q�ɂȂ��Ă��Ă����v�ł��B�i���ꂪ������JAVA_CODE�̎g�������ǂ��������Ă��܂��E�E�E�j
�����j�F | E-mail : [email protected] Web page : http://www.cmt.phys.kyushu-u.ac.jp/~M.Sakurai/ |