fsyacc

    3

    2답변

    저는 F #, 즉 FsLex와 FsYacc의 조합을 사용하여 장난감 컴파일러에서 작업하고 있습니다. 그 (것)들에 익숙하게하기 위하여는, 나는 전문가 F # (v2) 책 (좋은 책 btw)의 Lexer/Parser 장을 읽었다. 바로 지금, 나는 ocamlyacc 튜토리얼을 잘 살펴 보았고 마지막 예제 인 다기능 계산기 mfcalc을 고수했습니다. 특히,

    4

    1답변

    F # Power Pack의 fsyacc/fslex를 사용하여 일부 소스 코드를 구문 분석하고 있습니다. use inputChannel = new StreamReader(File.OpenRead tempFileName) let lexbuf = Lexing.LexBuffer<_>.FromTextReader inputChannel let ast = try

    3

    1답변

    Lexer는 렉싱 중에 대괄호를 구별하고 열린 대괄호 스택을 유지하기로되어 있습니다. 이를 위해 나는이처럼 내 FSL 파일에 도우미 함수를 지정 : let updateBracketStack sign = // whenever a bracket is parsed, update the stack accordingly match sign with

    2

    1답변

    내 fsyacc 코드에서 변수를 찾을 수 없다는 컴파일러 오류가 발생하지만 확실하지 않습니다. 나는 누군가가 그 문제를 지적 할 수 있기를 희망했다. %{ open Ast %} // The start token becomes a parser function in the compiled code: %start start // These are

    0

    1답변

    내가 fslex 및 fsyacc 및 F 번호 소스 파일 ( .fs을 사용하고 그들이 렉서 (.fsl)와 파서 생성을 참조 F 또한 lex.fs 1 # 1 "/[PROJECT-PATH-HERE]/lex.fsp ... 16 # 16 "/PROJECT-PATH-HERE]/lex.fs 17 // This is the type of tokens acce

    1

    1답변

    FsLex와 FsYacc를 사용하여 간단한 스크립트 언어를 구문 분석하려고하는데 마이너스 연산자를 음수와 구별하는 데 문제가 있습니다. "1-2"라는 단어를 평가하면 파서는 원하는 AST : Minus(NumberLiteral(1.0),NumberLiteral(2.0))을 반환합니다. 그러나 "1-2"라는 용어를 평가하면 렉서는 숫자 1을 생성하고 숫자 -

    2

    1답변

    C 응용 프로그램을 .Net으로 번역하고 작업 자동화 방법을 생각하고 싶습니다. 나는 "구문 분석"하고 C 파일을 컴파일 할 필요가 없다. 프로젝트 구조를 다시 만들고, C 파일에 해당하는 .NET 클래스를 만들고 싶다. YACC/LEX 도구와 다른 파서를 볼 수있는 감각이 있는가? 발전기? C 코드에서 AST를 만들 수 있다면 아마도 C# 코드를 얻을 수

    1

    2답변

    이있는 Fsyacc의 예제 문법 확장 "F # Parsed Language Starter"의 일부로 제공되는 예제 문법을 확장하여 단항 마이너스 (2 * -5와 같은 표현식)를 지원하려고했습니다. 다음과 같이 문법의 규칙 ...... %nonassoc UMINUS .... 과 : 나는 나는과 같이 우선 순위를 포함하도록 .fsy 파일의 헤더를 확장,

    2

    1답변

    내 컴퓨터에서 FSlex/FSyacc에 문제가 있습니다. 문맥 상 이것은 Parallels 가상 머신에서 실행되는 Windows 8 Consumer Preview (32 비트)에서 실행되는 Visual Studio 11 베타 내에 있습니다. ------ 빌드 시작 : 프로젝트 : 기본, 구성 : 모든 CPU ------ C : \ Windows \ Micr

    3

    1답변

    나는 렉서에 매개 변수를 전달하는 것이 가능하다는 것을 알고 rule tokenize scope = parse | whitespace { tokenize scope lexbuf } | newline { newline lexbuf; tokenize scope lexbuf } 하지만 비슷한 방식으로 내 파서 시작 기호를 정